package com.offcn.mapper;

import com.offcn.bean.User;
import com.offcn.bean.User2;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;
import java.util.Map;

public interface UserMapper {
    // 查询所有用户
    List<User> selectUser();

    // 根据id值去查询用户
    User getUserById(int id);

    // 根据用户名和密码查询
    //起了两个别名，name,pwd，对应的映射文件（UserMapper）中， 也是用这两个别名
    User getUserByNameAndPwd(@Param("name") String username, @Param("pwd") String password);

    // 根据用户名和密码查询（Map方法），适用于多个参数
    User getUserByNameAndPwd1(Map<String,String> map);

    //新增一个用户,可以使用上面的两种方法，也可使用下面的方法：传递一个对象
    int insertUser(User user);

    // 修改用户
    int updateUser(User user);

    // 删除用户
    int deleteUser(int id);

    // 模糊查询（用户名的查询）
    List<User> getLike(@Param("value") String str);

    // <!--根据用户名进行模糊查询, 在mybatis中使用 <typeAlias type="com.offcn.bean.User" alias="user"></typeAlias>，
    List<User> getLike2(@Param("value") String str);

    // <!--根据用户名进行模糊查询, 在mybatis中使用 使用<typeAlias type="com.offcn.bean"></typeAlias>，形成别名默认别名，所有的类名的默认别名，
    // 所有别名默认类名小写
    List<User> getLike3(@Param("value") String str);

    // User2：pssword与数据库中user1表的pwd字段不不一致,通过sql语句设置别名
    List<User2> getLike4(@Param("value") String str);

    // User2：pssword与数据库中user1表的pwd字段不不一致,使用结果集映射->ReslutMap
    List<User2> getLike5(@Param("value") String str);

    // 查询用户-分页
    List<User2> selectUserPage(Map<String,Integer> map);

    /*注解式*/
    // 根据id去查询用户
//    @Select("select * from user1 where id=#{id}")
//    User getUserByIdNote(int id);
}
